<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // console.log(this);
        function fun() {
            console.log(this);
        }

        // fun()
        // console.log(window);

        var obj = {
            name: '李狗蛋',
            // fun() {
            //     console.log(this);
            // }
        }

        // obj.fun()
        function fn2(sex, age) {
            // console.log(this);
            this.sex = sex
            this.age = age
            console.log(obj);
        }
        function fn() {
            // apply, call的第一个参数 是函数内部this要指向的对象
            // apply以数组的形式传递参数 call以散落的形式传递参数
            // fn2.call(obj, '女', '16')
            // bind有返回值 返回值就是调用bind方法的函数
            // fn2.apply(obj, ['女', '16'])
            // console.log(fn2.bind());
            fn2.bind(obj)('女', '16')
        }

        fn()
    </script>
</body>
</html>